7589
9974
Я абсолютно початківець, два тижні навчався самостійно, готуючись до завантажувального табору, який з’явиться через місяць. Прагнучи вдосконалити свої навички та "навчитися мислити як розробник", я взявся за проект, який намагається вирішити реальну проблему.
Моя дружина веде бізнес, вимагаючи від неї складання рахунків для своїх клієнтів. Я намагаюся використовувати HTML і JavaScript для створення веб-додатків, що дозволяє їй швидко створювати власні рахунки-фактури, замість того, щоб щоразу їх виписувати.
У поточній версії запит запитує у неї номер. Це число генерує однакову кількість рядків із трьох стовпців у HTML. Це дозволяє їй налаштувати рахунок-фактуру з точною кількістю полів, які їй потрібні.
У колонці 1 міститься назва товару. У цьому ж рядку стовпець 2 містить одиницю виміру, тоді як стовпець 3 містить загальну вартість цього товару, яка є базовою ціною, помноженою на одиницю. Я хочу, щоб це обчислення відбулося після натискання кнопки. Але, я застряг.
Для того, щоб виконати математику, мені потрібно вміти отримувати цілі числа з кожного рядка та стовпця та передавати їх у функцію. Але оскільки кожен рядок і стовпець генеруються автоматично, вони не мають унікальних атрибутів, і тому їх неможливо ідентифікувати. Я можу виконати математику в кожному стовпці, але не в кожному рядку.
Оскільки я настільки новачок, дізнавшись лише з кількох вступних курсів Codecademy та деяких відеороликів на YouTube, я не знаю, як оцінити, чи підходжу я до проекту абсолютно неправильно, чи я не маю якоїсь хитрості, або якщо просто чогось ще не дізналися. Якби хтось, хто володіє певним досвідом, зміг підштовхнути мене у правильному напрямку, я б це дуже вдячний!
Я долучив весь код до цього повідомлення. Перепрошую, якщо це жахливий безлад. Будьте легкі зі мною, я новачок!
const invDate = Дата ();
var field = " " +
" " +
"  

"; document.getElementById ('newInvoice'). onclick = function () { нехай invoicedName = підказка ('Кому виставляється цей рахунок-фактура?', 'Введіть ім'я'); let productFields = Номер (підказка ('Скільки назв товарів у цьому рахунку-фактурі?', 'Будь ласка, введіть номер')); нехай поля = '' нехай dynHtml = '' if (рахунок-фактура! = null && productFields! = null) { для (нехай i = 1; i <= productFields; i ++) { поля + = поле}; } else {попередження ('Будь ласка, введіть правильні введені дані.'); }; dynHtml = "


" + "

ФАКТУРА

" + "

Підготовлено для " + рахунок-фактура + "," + "

" + invDate + "



" + поля + "

" + "
"; document.write (dynHtml); document.getElementById ('обчислити'). onclick = функція getQtyFields () { нехай qtyInputs = document.getElementsByName ('qty'), resultQty = 0; для (нехай j = 0; j
Як ви вже сказали, ваша головна проблема полягає у пошуку способу надати кожному полю вводу у своєму рядку свій унікальний ідентифікатор. Таким чином ви можете визначити ціну для кожного рядка та вставити її в поле ціни.
Спочатку потрібно почати з полів:
var field = " " +
" " +
"  

"; document.getElementById ('newInvoice'). onclick = function () { ... для (нехай i = 1; i <= productFields; i ++) { поля + = поле}; ... }; Кожна група потребує власного ідентифікатора. Таким чином, ви можете пізніше звернутися до кожного вводу в кожному рядку для обчислення загальної суми ціни. Атрибут class - це те, що ви можете призначити декільком елементам для подальшого посилання на них. Цей клас може бути будь-яким, якщо він не суперечить класу для будь-якого іншого рядка. Ви можете використовувати i циклу як ваш ідентифікатор, оскільки він змінюється з кожним циклом. для (нехай i = 1; i <= productFields; i ++) { var field = " " + " " + "

"; поля + = поле }; Це додасть рядок класу- {i} до кожного поля в кожному рядку. А ще краще, ви можете перетворити це на власну функцію функція createFields (i) { повернути " " + " " + "

"; } для (нехай i = 1; i <= productFields; i ++) { поля + = createFields (i); }; Ви отримуєте щось подібне до наступного html





Тепер у вашій функції обчислення ви можете посилатися на ці рядки та обчислювати їх ціну. Тут ви можете прокручувати поля введення "item". document.getElementById ('обчислити'). onclick = функція getQtyFields () { let itemInputs = document.getElementsByName ('item') для (нехай i = 0; i ) для (нехай i = 0; i